There are different ways to determine bugs located in a Device Under Test (DUT) or in its Verification Environment (VE); the entire system may be referred to as the DVE. For example, a typical session may contain many failing runs, but usually only several distinct root causes (“bugs”). However, wrong classification might result in two or more engineers debugging the same problem, while other bugs are being neglected. Moreover, correct classification may be a necessary condition for many automatic debugging tools, which may assume that all failures are due to the same bug.
In some cases, a failure may have an elaborate error message that may enable the user to decide quickly whether two failing runs exhibit the same bug, i.e., both fail due to the same root cause (and also to debug it). Unfortunately, many DVEs lack such elaboration, and even when one exists, it may have shortcomings such as the following: (i) it contains a lot of information that clutters the actual cause of the error; (ii) it may fail to describe the “correct” level that distinct different bugs. For example, one may have runs with several different bugs, all of which end up crashing due to “memory overload”, which appears in the error message, but does not help us to isolate the different root causes.
There is thus a need for tools and techniques that can be used to identify runs according to their bug, or root cause.